#ifndef STL_LEARN_TEST_H__
#define STL_LEARN_TEST_H__

#include <cstdlib>
#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

// 获取目标 long，输入一个long型数据
long get_a_target_long();

// 获取目标 string，输入一个string型数据
std::string get_a_target_string();

// 比较目标 long 用于cmp的函数
int compareLongs(const void *a, const void *b);

// 比较目标 string 用于cmp的函数
int compareStrings(const void *a, const void *b);

// 转换clock seconds，将clock_t 转换到 second
double transformClockSeconds(const clock_t &millisec);

// 随机的字符串
std::string get_a_random_string(const long &size);

class TimeCounter;

class TimeCounter {
private:
  clock_t timeStart;
  clock_t timeEnd;
  double seconds;

public:
  TimeCounter(): timeStart(clock()), timeEnd(clock()), seconds(0) {}

  void show(const std::string& message);
  void endAndShow(const std::string& message);
  void endAndShow();
  void start();
  void end();
  void wait(const long& value);
};

#endif
